Java配列の全て ─ 仕組み・メモリ・共変性・試験の急所まで完全理解
Javaの配列をゼロから完全解説。JVMメモリモデル、オブジェクトとしての正体、共変性の罠、多次元配列、Arraysユーティリティ、Silver試験頻出パターンまで網羅。
Javaの配列をゼロから完全解説。JVMメモリモデル、オブジェクトとしての正体、共変性の罠、多次元配列、Arraysユーティリティ、Silver試験頻出パターンまで網羅。
JavaのArrayListをゼロから完全解説。Collections Framework誕生の背景、内部の配列リサイズ戦略、ジェネリクス・オートボクシング、主要メソッド、Silver試験頻出パターンまで網羅。
「とりあえず private にする」から脱却する。情報隠蔽の原則がなぜ生まれたか、public フィールドの何が問題か、getter/setter をただ生やすアンチパターン、イミュータブル設計との関係を解説。
純粋関数・副作用なし・イミュータブルデータとはどういう考え方か。オブジェクト指向と何が違うのか。Java 8 でラムダ・Stream が導入された背景と、関数型の考え方がコードをどう変えるかを解説。
なぜ Effective Java は「継承よりコンポジション」と言うのか。is-a と has-a の違い、深い継承ツリーが壊れる理由、コンポジションへの書き換え方を具体例で解説。
前置/後置インクリメントの挙動・2の補数による整数表現・オーバーフローの正体・浮動小数点の精度問題を、ビットとメモリの視点から解説。Java Silver 頻出の「なぜ?」を暗記ではなく構造から理解する。
ArrayList は内部的に配列、LinkedList はノードの連鎖、HashMap はハッシュ値とバケット。各コレクションのメモリ構造を知ると、O(1)/O(n) の計算量が体感で理解でき、実務での選択ミスがなくなる。
例外はオブジェクト。スタックトレースはスタックのスナップショット。finally が return より強い理由。try-with-resources が AutoCloseable を呼ぶ仕組み。例外の構造をメモリから理解する。
ラムダ式はなぜ匿名クラスより軽いのか。なぜ外側の変数は effectively final でなければならないのか。クロージャのキャプチャという概念をメモリの視点から解説する。
「文法は読めるが内部で何が起きているかわからない」状態から脱却するための、JVMメモリモデルを軸とした体系的解説。Integer キャッシュ・String pool・== と equals の「なぜ」を暗記ではなく構造で理解する。
親型の変数に子のインスタンスを入れてメソッドを呼ぶと、なぜ子のメソッドが動くのか。仮想メソッドテーブル(vtable)・動的ディスパッチ・instanceof・ClassCastException をメモリ構造から解説。
Stream の3大性質「遅延評価・使い捨て・元データ不変」が実際どういう意味かを、パイプラインの組み立てと実行タイミングから解説。終端操作が来るまで何も起きない理由と、それによる最適化の仕組み。